$(function () {
  //dom加载后执行
  mapChart("mapChart");
});

/**
 * 监听窗口变化重置echarts地图尺寸大小
 */
window.addEventListener("resize", () => {
  myChart.resize();
  debugger;
});

/**
 * 根据Json里的数据构造Echarts地图所需要的数据
 * @param {} mapJson
 */
function initMapData(mapJson) {
  var mapData = [];
  for (var i = 0; i < mapJson.features.length; i++) {
    mapData.push({
      name: mapJson.features[i].properties.name,
      //id:mapJson.features[i].id
    });
  }
  return mapData;
}

/**
 * 返回上一级地图
 */
function back() {
  if (mapStack.length != 0) {
    //如果有上级目录则执行
    var map = mapStack.pop();
    $.get("./asset/json/map/" + map.mapId + ".json", function (mapJson) {
      registerAndsetOption(myChart, map.mapId, map.mapName, mapJson, false);
      
      //修改提示栏
      $(".title").html("湖南省项目分布图");

      //返回上一级后，父级的ID、Name随之改变
      parentId = map.mapId;
      parentName = map.mapName;
    });
  }
}
/**
 * Echarts地图
 */

//中国地图（第一级地图）的ID、Name、Json数据
// var chinaId = 100000;
// var chinaName = "china";
// var chinaJson = null;

//湖南省地图（第一级地图）的ID、Name、Json数据
var hunanId = 430000;
var hunanName = "hunan";
var hunanJson = null;

//记录父级ID、Name
var mapStack = [];
var parentId = null;
var parentName = null;

//Echarts地图全局变量，主要是在返回上级地图的方法中会用到
var myChart = null;
function mapChart(divid) {
  $.get("./asset/json/map/" + hunanId + ".json", function (mapJson) {
    hunanJson = mapJson;
    myChart = echarts.init(document.getElementById(divid));
    registerAndsetOption(myChart, hunanId, hunanName, mapJson, false);
    parentId = hunanId;
    parentName = "hunan";
    myChart.on("click", function (param) {
      var cityId = cityMap[param.name];
      console.log(cityId);
      console.log(param);
      debugger;
      if (cityId) {
        //代表有下级地图
        $.get("./asset/json/map/" + cityId + ".json", function (mapJson) {
          $(".title").html(param.name + "项目分布图");
          registerAndsetOption(myChart, cityId, param.name, mapJson, true);
        });
      } else {
        // //没有下级地图，回到一级中国地图，并将mapStack清空
        // registerAndsetOption(myChart, hunanId, hunanName, hunanJson, false)
        // mapStack = []
        // parentId = hunanId;
        // parentName = hunanName;
        return;
      }
      // $.get('./asset/json/map/'+param.data.id+'.json', function (mapJson,status) {

      //     registerAndsetOption(myChart,param.data.id,param.name,mapJson,true)

      // }).fail(function () {
      //     registerAndsetOption(myChart,chinaId,'china',chinaJson,false)
      // });
    });
  });
}

/**
 *
 * @param {*} myChart
 * @param {*} id        省市县Id
 * @param {*} name      省市县名称
 * @param {*} mapJson   地图Json数据
 * @param {*} flag      是否往mapStack里添加parentId，parentName
 */
function registerAndsetOption(myChart, id, name, mapJson, flag) {
  echarts.registerMap(name, mapJson);
  myChart.setOption({
    title: {
      text: name == "hunan" ? "湖南省项目分布图" : name + "项目分布图",
      subtext: "所有项目的地区分布图",
      x: "10",
      y: "10",
      textStyle: {
        color: "#fff",
        fontSize: 18,
      },
    },
    series: [
      {
        name: name == "hunan" ? "湖南省项目分布图" : name + "项目分布图",
        layoutCenter: ["10%", "50%"],
        type: "map",
        map: name,
        zoom: 1.2, //地图大小设置
        roam: false, //是否开启鼠标缩放和平移漫游
        itemStyle: {
          //地图区域的多边形 图形样式
          normal: {
            //是图形在默认状态下的样式
            label: {
              show: true, //是否显示标签
              textStyle: {
                color: "#fff",
              },
            },
            areaColor: "rgba(23, 27, 57,0)",
            borderColor: "#1dc199",
            borderWidth: 1,
          },
          emphasis: {
            //是图形在高亮状态下的样式,比如在鼠标悬浮或者图例联动高亮时
            label: { show: true },
            borderWidth: 0.1,
            borderColor: "#1dc199",
            textColor: "#fff",
            areaColor: "#5AD8A6",
          },
        },
        data: initMapData(mapJson),
      },
    ],
  });

  if (flag) {
    //往mapStack里添加parentId，parentName,返回上一级使用
    mapStack.push({
      mapId: parentId,
      mapName: parentName,
    });
    parentId = id;
    parentName = name;
  }
}
